

package com.itheima62.znchat;

import android.content.Context;
import android.os.Bundle;
import android.util.Log;

import com.iflytek.cloud.InitListener;
import com.iflytek.cloud.RecognizerResult;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechSynthesizer;
import com.iflytek.cloud.SpeechUtility;
import com.iflytek.cloud.SynthesizerListener;
import com.iflytek.cloud.ui.RecognizerDialog;
import com.iflytek.cloud.ui.RecognizerDialogListener;

/**
 * @author Administrator
 * @创建时间 2015-7-11 上午11:04:57
 * @描述 TODO
 * 
 *     @ svn提交者：$Author$ @ 提交时间: $Date$ @ 当前版本: $Rev$
 */
public class SpeakListenUtils
{
	private Context	context;

	public SpeakListenUtils(Context context) {
		this.context = context;
		SpeechUtility
				.createUtility(context, SpeechConstant.APPID + "=55a07e68");
	}

	/**
	 * 把说的话转换成文字
	 * 
	 * @param listener
	 *            监听回调结果，创建监听器处理json文件
	 */
	public void listen(RecognizerDialogListener listener) {
		InitListener mInitListener = new InitListener() {

			@Override
			public void onInit(int arg0) {
				// TODO Auto-generated method stub

			}
		};
		// 1.创建SpeechRecognizer对象，第二个参数：本地听写时传InitListener
		RecognizerDialog iatDialog = new RecognizerDialog(context,
				mInitListener);
		// 2.设置听写参数，同上节
		// 3.设置回调接口
		iatDialog.setListener(listener);
		// 4.开始听写
		iatDialog.show();
	}

	/**
	 * 
	 */
	/**
	 * 把文字转换成声音
	 * @param text
	 *      输入的文字
	 */
	public void speak(String text) {
		// 1.创建SpeechSynthesizer对象, 第二个参数：本地合成时传InitListener
		SpeechSynthesizer mTts = SpeechSynthesizer
				.createSynthesizer(context, null);
		// 2.合成参数设置，详见《科大讯飞MSC API手册(Android)》SpeechSynthesizer 类
		// 设置发音人（更多在线发音人，用户可参见 附录12.2
		mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");
		mTts.setParameter(SpeechConstant.SPEED, "50");// 设置语速
		mTts.setParameter(SpeechConstant.VOLUME, "80");// 设置音量，范围0~100
		mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD);
		// 设置合成音频保存位置（可自定义保存位置），保存在“./sdcard/iflytek.pcm”
		// 保存在SD卡需要在AndroidManifest.xml添加写SD卡权限
		// 仅支持保存为pcm格式，如果不需要保存合成音频，注释该行代码
		mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, "./sdcard/iflytek.pcm");
		// 3.开始合成
		mTts.startSpeaking(text, new SynthesizerListener() {
			
			@Override
			public void onSpeakResumed() {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onSpeakProgress(int arg0, int arg1, int arg2) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onSpeakPaused() {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onSpeakBegin() {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onCompleted(SpeechError arg0) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onBufferProgress(int arg0, int arg1, int arg2, String arg3) {
				// TODO Auto-generated method stub
				
			}
		});
	}

}
